home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / GLUT-3.7 / PROGS / GLE / HELIX3.C < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-12  |  1.2 KB  |  51 lines

  1.  
  2. /* 
  3.  * helicoid (gernalized torus) demo 
  4.  *
  5.  * FUNCTION:
  6.  * This code provides a very simple example of the helicoid primitive.
  7.  * Most of this code is required to set up OpenGL and GLUT, and very
  8.  * very little to set up the helix drawer. Don't blink!
  9.  *
  10.  * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ========
  11.  *
  12.  * HISTORY:
  13.  * Written by Linas Vepstas, March 1995
  14.  */
  15.  
  16. /* required include files */
  17. #include <GL/glut.h>
  18. #include <GL/tube.h>
  19.  
  20. /*  most recent mouse postion */
  21. extern float lastx;
  22. extern float lasty;
  23.  
  24. void InitStuff (void) {
  25.    lastx = 121.0;
  26.    lasty = 121.0;
  27. }
  28.  
  29. /* draw the helix shape */
  30. void DrawStuff (void) {
  31.  
  32.    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  33.    glColor3f (0.8, 0.3, 0.6);
  34.  
  35.    /* set up some matrices so that the object spins with the mouse */
  36.    glPushMatrix ();
  37.    glTranslatef (0.0, 0.0, -80.0);
  38.    glRotatef (220.0, 0.0, 1.0, 0.0);
  39.    glRotatef (65.0, 1.0, 0.0, 0.0);
  40.  
  41.    /* Phew. FINALLY, Draw the helix  -- */
  42.    gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
  43.    gleHelicoid (1.0, 6.0, -1.0, 
  44.                0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx);
  45.  
  46.    glPopMatrix ();
  47.  
  48.    glutSwapBuffers ();
  49. }
  50. /* ------------------------- end of file ----------------- */
  51.